/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javafxapplication4;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.lang.String;

/**
 * Universidad del Valle de Guatemala
 * Algoritmos y Estructuras de Datos
 * Seección: 20
 * Autor: Rodrigo Miguel Avelar Gonzalez
 * Descripcion: 
 */
public class DataBase {
    
    /**
     * Atributos para la conexion con la base de datos
     */
    private Connection con;
    private Statement stmt;
    private String SQL;
    private ResultSet rs;
    
    /**
     * DataBase: constructor de la clase que establece la conexion a la base de datos
     * pre: 
     * post: se establece conexion con la base de datos
     * @param host
     * @param userName
     * @param password 
     */
    public DataBase(String host, String userName, String password, String SQL){
        try{
                con = DriverManager.getConnection( host, userName, password );
                stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
                this.SQL = SQL;
                rs = stmt.executeQuery(SQL);
            }
            catch(SQLException err){
                System.out.println( err.getMessage( ) );
            }
    }
    
    /**
     * Almacenar: inserta un nuevo registro
     * pre: base de datos con o sin registros
     * post: se inserta un nuevo registro a la base de datos
     * @param autor
     * @param ed
     * @param estado
     * @param precio
     * @param curso
     * @param profesor
     * @param nombre
     * @param correo
     * @param year 
     */
    public void almacenar(String autor, String ed, String nombre, String year, String estado, String precio
            , String curso, String profesor, String correo){
        try{
                rs.moveToInsertRow();
                rs.updateString("AUTOR", autor);
                rs.updateString("EDICION", ed);
                rs.updateString("ESTADO", estado);
                rs.updateString("PRECIO", precio);
                rs.updateString("CURSO", curso);
                rs.updateString("PROFESOR", profesor);
                rs.updateString("NOMBRE", nombre);
                rs.updateString("CORREO", correo);
                rs.updateString("AÑO", year);
                rs.insertRow();
            }
            catch(SQLException err){
                System.out.println( err.getMessage( ) );
            }
    }

    /**
     * mostrar_autor: almacena en una lista las entradas que tienen el autor especificado por la busqueda
     * @param buscar
     * @return 
     */
    public String [][] mostrar_autor(String buscar){
        String resultado [][] = null;
        int contador = 0;        
        try{
                while(rs.next()){
                    if(buscar.equalsIgnoreCase(rs.getString("AUTOR"))){
                        resultado[contador][0] = rs.getString("AUTOR");
                        resultado[contador][1] = rs.getString("EDICION");
                        resultado[contador][2] = rs.getString("ESTADO");
                        resultado[contador][3] = rs.getString("PRECIO");
                        resultado[contador][4] = rs.getString("CURSO");
                        resultado[contador][5] = rs.getString("PROFESOR");
                        resultado[contador][6] = rs.getString("NOMBRE");
                        resultado[contador][7] = rs.getString("CORREO");
                        resultado[contador][8] = rs.getString("AÑO");
                        contador++;
                    }
                    
                }
            }
            catch(SQLException err){
                System.out.println( err.getMessage( ) );
            }
        return resultado;        
    }
    
    /**
     * mostrar_nombre: almacena en una lista las entradas que tienen el libro especificado por la busqueda
     * @param buscar
     * @return 
     */
    public String [][] mostrar_nombre(String buscar){
        String resultado [][] = null;
        int contador = 0;        
        try{
                while(rs.next()){
                    if(buscar.equalsIgnoreCase(rs.getString("NOMBRE"))){
                        resultado[contador][0] = rs.getString("AUTOR");
                        resultado[contador][1] = rs.getString("EDICION");
                        resultado[contador][2] = rs.getString("ESTADO");
                        resultado[contador][3] = rs.getString("PRECIO");
                        resultado[contador][4] = rs.getString("CURSO");
                        resultado[contador][5] = rs.getString("PROFESOR");
                        resultado[contador][6] = rs.getString("NOMBRE");
                        resultado[contador][7] = rs.getString("CORREO");
                        resultado[contador][8] = rs.getString("AÑO");
                        contador++;
                    }
                    
                }
            }
            catch(SQLException err){
                System.out.println( err.getMessage( ) );
            }
        return resultado;        
    }
    
    /**
     * close: marca el fin del trabajo con la base de datos
     */
    public void close(){
        try{
            stmt.close();
            rs.close();
        }
        catch(SQLException err){
            System.out.println( err.getMessage( ) );
        }
    }
}
